package com.principle.segregation;

public class InfSegregation1 {

    public static void main(String[] args) {

    }

}

/**
 * 有一个接口 ，里面5个方法 operation1,operation2,operation3,operation4,operation5
 * B D 实现这个两个接口
 * A通过接口依赖了B，调用了B中的operation1,operation2,operation3
 * C通过接口依赖了D，调用了D中的operation1,operation4,operation5
 * <p>
 * 问题：
 * A只调用了  1,2，3方法，但是B却要实现接口的所有方法
 * 同样 C只调用了 1 ，4,5 方法 ，但是D却要实现接口的所有方法
 */

interface MyInterface {
    void operation1();

    void operation2();

    void operation3();

    void operation4();

    void operation5();
}

class B implements MyInterface {

    @Override
    public void operation1() {
        System.out.println("B 实现了 operation1");
    }

    @Override
    public void operation2() {
        System.out.println("B 实现了 operation2");
    }

    @Override
    public void operation3() {
        System.out.println("B 实现了 operation3");
    }

    @Override
    public void operation4() {
        System.out.println("B 实现了 operation4");
    }

    @Override
    public void operation5() {
        System.out.println("B 实现了 operation5");
    }
}


class C implements MyInterface {

    @Override
    public void operation1() {
        System.out.println("C 实现了 operation1");
    }

    @Override
    public void operation2() {
        System.out.println("C 实现了 operation2");
    }

    @Override
    public void operation3() {
        System.out.println("C 实现了 operation3");
    }

    @Override
    public void operation4() {
        System.out.println("C 实现了 operation4");
    }

    @Override
    public void operation5() {
        System.out.println("C 实现了 operation5");
    }
}

//todo A只用到了接口中的三个方法
class A{
    public void depend1(MyInterface myInterface){
        myInterface.operation1();
    }
    public void depend2(MyInterface myInterface){
        myInterface.operation2();
    }
    public void depend3(MyInterface myInterface){
        myInterface.operation3();
    }
}

//todo A只用到了接口中的三个方法
class D{
    public void depend1(MyInterface myInterface){
        myInterface.operation1();
    }
    public void depend4(MyInterface myInterface){
        myInterface.operation4();
    }
    public void depend5(MyInterface myInterface){
        myInterface.operation5();
    }
}
